// auth.js - 微信登录和授权处理工具

const API = require('./api');

// 微信登录工具
const auth = {
  // 检查是否已登录
  isLoggedIn() {
    return !!wx.getStorageSync('token');
  },

  // 微信登录流程
  login() {
    return new Promise((resolve, reject) => {
      // 先检查是否有token
      const token = wx.getStorageSync('token');
      if (token) {
        // 如果有token，验证token是否有效
        this.checkToken().then(res => {
          resolve(res);
        }).catch(() => {
          // token无效，重新登录
          this.wxLogin().then(res => {
            resolve(res);
          }).catch(err => {
            reject(err);
          });
        });
      } else {
        // 没有token，直接进行微信登录
        this.wxLogin().then(res => {
          resolve(res);
        }).catch(err => {
          reject(err);
        });
      }
    });
  },

  // 检查token是否有效
  checkToken() {
    return new Promise((resolve, reject) => {
      API.auth.getUserInfo().then(res => {
        resolve(res);
      }).catch(err => {
        // 请求失败，可能是token过期
        wx.removeStorageSync('token');
        reject(err);
      });
    });
  },

  // 执行微信登录
  wxLogin() {
    return new Promise((resolve, reject) => {
      // 获取微信登录code
      wx.login({
        success: (loginRes) => {
          if (loginRes.code) {
            // 获取用户信息
            this.getUserProfile().then(userRes => {
              // 调用后端登录接口
              API.auth.wxLogin(
                loginRes.code, 
                userRes.encryptedData, 
                userRes.iv
              ).then(res => {
                // 保存token
                wx.setStorageSync('token', res.data.token);
                // 保存用户信息
                wx.setStorageSync('userInfo', res.data.userInfo);
                resolve(res.data);
              }).catch(err => {
                reject(err);
              });
            }).catch(err => {
              reject(err);
            });
          } else {
            wx.showToast({
              title: '微信登录失败',
              icon: 'none'
            });
            reject(new Error('微信登录失败'));
          }
        },
        fail: (err) => {
          wx.showToast({
            title: '微信登录失败',
            icon: 'none'
          });
          reject(err);
        }
      });
    });
  },

  // 获取用户信息
  getUserProfile() {
    return new Promise((resolve, reject) => {
      wx.getUserProfile({
        desc: '用于完善会员资料',
        success: (res) => {
          resolve(res);
        },
        fail: (err) => {
          wx.showToast({
            title: '获取用户信息失败',
            icon: 'none'
          });
          reject(err);
        }
      });
    });
  },

  // 退出登录
  logout() {
    wx.removeStorageSync('token');
    wx.removeStorageSync('userInfo');
    // 可以添加跳转到登录页的逻辑
  },

  // 获取用户信息
  getUserInfo() {
    return wx.getStorageSync('userInfo') || {};
  }
};

module.exports = auth; 